FROM ubuntu:18.04  
  
# 更新软件包列表并安装必要的软件包和工具  
RUN apt-get update && apt-get install -y \  
    wget \  
    gnupg \  
    dirmngr \  
    && rm -rf /var/lib/apt/lists/*  
  
# 安装MySQL服务器（默认是MySQL 5.7）  
RUN apt-get update && apt-get install -y mysql-server && rm -rf /var/lib/apt/lists/*  
  
# 设置MySQL root密码（替换your_root_password）  
RUN echo 'mysql-server mysql-server/root_password password your_root_password' | debconf-set-selections  
RUN echo 'mysql-server mysql-server/root_password_again password your_root_password' | debconf-set-selections  
  
# 允许MySQL接受远程连接（可选，但出于安全考虑，通常不建议在生产环境中这样做）  
RUN sed -i 's/bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf  
  
# 安装Redis  
RUN apt-get update && apt-get install -y redis-server && rm -rf /var/lib/apt/lists/*  
  
# 安装OpenJDK 1.8  
RUN apt-get update && apt-get install -y openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*  
  
# 设置环境变量  
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/jre  
  
# 配置MySQL和Redis的存储目录（可选）  
VOLUME /var/lib/mysql  
VOLUME /var/lib/redis  
  
# 暴露MySQL和Redis的端口  
EXPOSE 3306 6379 8080  
  
# 初始化数据目录（可选）  
RUN mkdir -p /var/lib/mysql && chown -R mysql:mysql /var/lib/mysql  
RUN mkdir -p /var/lib/redis && chown -R redis:redis /var/lib/redis  
RUN mkdir /app  
  
# 设置工作目录  
WORKDIR /app  
  
# 复制你的Java应用到容器中（假设你的jar文件名为app.jar）  
# 注意：这一步是可选的，并且应该指向你的实际Java应用  
COPY app.jar /app  
  
# 启动脚本（注意：这不是最佳实践，因为Docker容器应该只运行一个主进程）  
# 你应该考虑使用docker-compose来管理多个容器  
# CMD /etc/init.d/mysql start && /etc/init.d/redis-server start && java -jar app.jar  
  
# 使用一个脚本或者entrypoint来启动服务，例如：  
# 创建一个启动脚本start.sh，然后在Dockerfile中COPY并设置为ENTRYPOINT  
# 这里只是作为一个概念展示，你需要实际创建这个脚本  
# ENTRYPOINT ["/path/to/start.sh"]
RUN apt-get update && apt-get install -y supervisor  
# 复制 supervisord 配置文件  
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# 使用 supervisord 作为容器的入口点  
CMD ["/usr/bin/supervisord"]